#include "T_FinalReportTableViewModel.h"
#include "FinalReportData.h"

#include <QIcon>

namespace GenerateReport
{
    T_FinalReportTableViewModel::T_FinalReportTableViewModel(QObject* parent)
        : QAbstractTableModel{ parent }
    {
        m_finalReportData = FinalReportDataInstance->getFinalReportTotalData();
        m_finalReportCount = FinalReportDataInstance->getFinalReportCount();
        initViewData();
    }

    T_FinalReportTableViewModel::~T_FinalReportTableViewModel()
    {
    }

    void T_FinalReportTableViewModel::initViewData()
    {
        if (m_finalReportCount > 0)
        {
            _header << "报告名称"
                << "点击跳转详情"
                << "保存时间";


            for (auto _sigleReportInfoList : m_finalReportData)
            {
                QStringList _data;
                //for (auto _info : _sigleReportInfoList)
                //{
                //    _data << _info;
                //}
                _data << _sigleReportInfoList.at(0);
                _data << "";
                _data << _sigleReportInfoList.at(2);
                _dataList.append(_data);
            }
        }
    }

    int T_FinalReportTableViewModel::rowCount(const QModelIndex& parent) const
    {
        return m_finalReportCount;
    }

    int T_FinalReportTableViewModel::columnCount(const QModelIndex& parent) const
    {
        return _header.count();
    }

    QVariant T_FinalReportTableViewModel::data(const QModelIndex& index, int role) const
    {
        if (role == Qt::DisplayRole)
        {
            return _dataList[index.row()][index.column()];
        }
        //else if (role == Qt::TextAlignmentRole)
        //{
        //    return Qt::AlignHCenter;
        //}
        return QVariant();
    }

    QVariant T_FinalReportTableViewModel::headerData(int section, Qt::Orientation orientation, int role) const
    {
        if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
        {
            return _header[section];
        }
        return QAbstractTableModel::headerData(section, orientation, role);
    }


    Qt::ItemFlags T_FinalReportTableViewModel::flags(const QModelIndex& index) const
    {
        if (!index.isValid())
            return Qt::NoItemFlags;

        //报告存在性标志位为false，设置不可选中
        auto _isExist = m_finalReportData.at(index.row()).at(3);
        if (_isExist == "false")
            return Qt::NoItemFlags; 
        return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
    }
}
